package com.house.keeper.shiro.config;

import java.util.LinkedHashMap;
import java.util.Map;

/**
 * 内置过滤器
 * @author zjj
 * @date 2022-05-09
 */
public class ShiroFilerMapFactory {

    /**
     * 常见过滤器
     * anon：无需认证（登录），可以访问
     * user：当登入操作的时候不做检查，如果使用remember me的功能，可以直接访问
     * authc：需要认证（登录），才能访问
     * roles：例如("/user/**","roles[admin]")或者("/user/**","roles['admin,guest']")，必须得到角色权限才能访问
     * perms：例如("/user/**","perms[user:add:*]")或者("/user/**","perms['user:add:*,user:edit:*']")，必须得到资源权限才能访问
     * rest：例如("/user/**","rest[user]")相当于("/user/**","perms[user:method]")，其中method为post，get，delete等
     * port：例如("/user/**","port[8081]")，请求url到端口为8081的地址上
     * authcBasic：例如("/user/**","authcBasic")，需要authcBasic认证
     * ssl：例如("/user/**","ssl")，表示url请求必须为https协议
     *
     *
     * @return
     */
    public static Map<String,String> shiroFilterMap(){
//        设置路径的映射
        LinkedHashMap<String,String> filterChainDefinitionMap = new LinkedHashMap<>();
//        对所有用户进行认证
        filterChainDefinitionMap.put("/static/**","anon");
        filterChainDefinitionMap.put("/login","anon");
        filterChainDefinitionMap.put("/logout","anon");
        filterChainDefinitionMap.put("/cityArea/getArea","anon");
        filterChainDefinitionMap.put("/car/getCarNum","anon");
//        前端
        filterChainDefinitionMap.put("/","anon");
        filterChainDefinitionMap.put("/index","anon");
        filterChainDefinitionMap.put("/doc.html","anon");
        filterChainDefinitionMap.put("/webjars/**/**", "anon");
        filterChainDefinitionMap.put("/swagger-resources/**", "anon");
        filterChainDefinitionMap.put("/v2/api-docs", "anon");
        filterChainDefinitionMap.put("/v2/api-docs-ext", "anon");
        filterChainDefinitionMap.put("/webjars/**", "anon");
        filterChainDefinitionMap.put("/**", "authc");

//        对所有页面进行认证
        filterChainDefinitionMap.put("/**","user");

        return filterChainDefinitionMap;
    }
}
